package cn.life.business.material.dao;

import cn.life.business.material.entity.po.MaterialAuditPo;
import cn.life.business.material.entity.po.MaterialPo;
import cn.life.business.material.entity.po.MaterialRecPo;
import cn.life.business.material.entity.po.MaterialTypePo;
import cn.life.business.material.entity.vo.MaterialRecVo;
import cn.life.common.entity.model.CMessage;
import cn.life.common.entity.vo.Pagination;

import java.util.List;

/**
 * @Description:    提料单Dao
 * 
 * @Author 李佳明
 * @Date 2018-07-26 10:17
 */
public interface MaterialDao {
    /**
     * @Description:    增加提料单主表
     *
     * @param materialRecVo
     * @return: 
     *
     * @Author 李佳明
     * @Date 2018/7/26 0026 上午 10:51 
     */
    Long addMaterialRecord(MaterialRecVo materialRecVo);
    /**
     * @Description:    增加提料单明细表
     *
     * @param materialRecVo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/7/26 0026 上午 10:51
     */
    int addMaterialDetailRecord(MaterialRecVo materialRecVo);
    /**
     * @Description:    审核提料单明细表
     *
     * @param materialRecPo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/7/26 0026 上午 10:51
     */
    int auditMaterialRecord(MaterialRecPo materialRecPo);
    /**
     * @Description:    增加材料
     *
     * @param materialPo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/7/26 0026 下午 2:37
     */
    int addMaterial(MaterialPo materialPo);
    /**
     * @Description:    修改材料
     *
     * @param materialPo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/7/26 0026 下午 2:37
     */
    int updateMaterial(MaterialPo materialPo);
    /**
     * @Description:    删除材料
     *
     * @param materialPo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/7/26 0026 下午 2:37
     */
    int deleteMaterial(MaterialPo materialPo);
    /**
     * @Description:    增加材料类型
     *
     * @param materialTypePo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/7/26 0026 下午 2:37
     */
    int addMaterialType(MaterialTypePo materialTypePo);
    /**
     * @Description:    修改材料类型
     *
     * @param materialTypePo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/7/26 0026 下午 2:37
     */
    int updateMaterialType(MaterialTypePo materialTypePo);
    /**
     * @Description:    删除材料类型
     *
     * @param materialTypePo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/7/26 0026 下午 2:37
     */
    int deleteMaterialType(MaterialTypePo materialTypePo);
    /**
     * @Description:    查询所需最大的typeCode
     *
     * @param materialTypePo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/7/26 0026 下午 3:14
     */
    String queryMaxTypeCode(MaterialTypePo materialTypePo);
    /**
     * @Description:    根据审核状态，查询待审核列表
     *
     * @param oprUserId
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/7/30 0030 下午 4:26
     */
    List<MaterialRecVo> queryRecordList(Long oprUserId,String recordName,Long projectId);
    /**
     * @Description:    增加审核记录
     *
     * @param materialRecPo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/7/31 0031 下午 2:40
     */
    int addMaterialAuditRecord(MaterialAuditPo materialRecPo);
    /**
     * @Description:    材料列表
     *
     * @param materialPo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/8/1 0001 下午 2:39
     */
    Pagination<MaterialPo> queryMaterialList(MaterialPo materialPo);
    /**
     * @Description:    材料详情
     *
     * @param materialPo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/8/1 0001 下午 2:39
     */
    MaterialPo queryMaterialDetail(MaterialPo materialPo);
    /**
     * @Description:    材料类型列表
     *
     * @param materialTypePo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/8/1 0001 下午 2:39
     */
    List<MaterialTypePo> queryMaterialTypeList(MaterialTypePo materialTypePo);
    /**
     * @Description:    材料类型详情
     *
     * @param materialTypePo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/8/1 0001 下午 2:39
     */
    MaterialTypePo queryMaterialTypeDetail(MaterialTypePo materialTypePo);
    /**
     * @Description:    查询我审核过的记录
     *
     * @param oprUserId
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/8/6 0006 下午 2:28
     */
    List<MaterialRecVo> queryOprRecordList(Long oprUserId,String recordName,Long projectId);
    /**
     * @Description:    查询提料单详情
     *
     * @param materialRecVo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/8/6 0006 下午 2:38
     */
    MaterialRecVo queryRecordDetail(MaterialRecVo materialRecVo);
    /**
     * @Description:    删除提料单明细表信息
     *
     * @param materialRecVo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018-09-20 下午 2:28
     */
    Integer deleteMaterialDetailRecord(MaterialRecVo materialRecVo);
    /**
     * @Description:    修改提料单主表信息
     *
     * @param materialRecVo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018-09-20 下午 2:28
     */
    Integer updateMaterialRecord(MaterialRecVo materialRecVo);
    /**
     * @Description:    将已有审核记录作废
     *
     * @param recordId
     * @return:
     *
     * @Author 李佳明
     * @Date 2018-09-21 上午 9:47
     */
    void updateMaterialAuditRecord(Long recordId);
    /**
     * @Description:    查询提料单记录集合
     *
     * @param recordName,projectId
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/11/11 0011 15:42
     */
    List<MaterialRecVo> queryMaterialRecList(String recordName, Long projectId,Long userId);
    /**
     * @Description:    记录当前审核状态
     *
     * @param state 审核状态 1.下一步，2.审核通过，3.未通过
     * @return:
     *
     * @Author 李佳明
     * @Date 2018-09-21 上午 9:47
     */
    void updateMaterialAuditRecord(Long recordId,Integer state);
}
